package com.cloudfast.manager;

import java.io.IOException;
import java.util.List;

import com.cloudfast.utils.excel.ExcelParams;
import com.cloudfast.utils.excel.ExcelReplaceParams;
import com.cloudfast.utils.excel.event.ExcelListenEvent;

/**
 * poi 操作工具类
 *
 * @author liuyw
 */
public interface ExcelManager extends BaseManager {

    /**
     * 向excel中追加内容
     *
     * @param <T>
     * @param filePath
     * @param excelData
     */
    public <T> byte[] appendToExcel(String filePath, ExcelParams<T> excelData);

    /**
     * 替换excel 中的内容;模板内容需要以 "${你的key}"
     *
     * @param filePath 服务器临时的文件路径;下载存放的路径;基于localHome
     * @param params
     */
    public byte[] replaceExcel(String filePath, ExcelReplaceParams params);

    /**
     * 生成excel
     *
     * @param <T>
     * @param fileName
     * @param excelData
     * @return
     */
    public <T> byte[] createExcel(String fileName, ExcelParams<T> excelData);


    /**
     * 导入excel数据 ;只处理第一个sheet页
     *
     * @param fileName excel文件路径
     * @param entity   实体类
     * @param <T>
     * @return
     */
    public <T> List<T> importExcelData(String fileName, T entity) throws IOException, InstantiationException, IllegalAccessException;

    /**
     * 导入excel数据;只处理第一个sheet页
     *
     * @param fileName excel文件路径
     * @param entity   实体类
     * @param event    处理事件
     * @param <T>
     */
    public <T> void importExcelData(String fileName, T entity, ExcelListenEvent<T> event);

}
